/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.*;

/**
 *
 * @author asus
 */
@Entity
public class Film implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    private int id;
    private String titre;
    private String note;
    private String affiche;
    private int prixDVD;
    private int prixBlueRay;
    private List<String> description =  new ArrayList<String>();
    private List<String> descriptionDetail =  new ArrayList<String>();
    @ManyToMany(cascade=CascadeType.PERSIST)
    private Collection<Acteur> acteurs = new ArrayList<Acteur>();
    @ManyToMany(cascade=CascadeType.PERSIST)
    private Collection<Realisateur> realisateurs = new ArrayList<Realisateur>();
    @ManyToMany(cascade=CascadeType.PERSIST)
    private List<Categorie> categories = new ArrayList<Categorie>();
    @OneToOne
    private Stock stock;
    // List<Commande>
    //List<Utilisateurs>


    public Film() { }
    
    public Film(int id, String titre, List<String> description, List<String> descriptionDetail, String note, String affiche, int prixDVD, int prixBlueRay) {
        this.id = id;
        this.titre = titre;
        this.description = description;
        this.descriptionDetail = descriptionDetail;
        this.note = note;
        this.affiche = affiche;
        this.prixDVD = prixDVD;
        this.prixBlueRay = prixBlueRay;

    }
    
    public Collection<Acteur> getActeurs() {
        return acteurs;
    }

    public void setActeurs(Collection<Acteur> acteurs) {
        this.acteurs = acteurs;
    }
    /**
     * Get the value of description
     *
     * @return the value of description
     */
    public Collection<String> getDescription() {
        return description;
    }

    /**
     * Set the value of description
     *
     * @param description new value of description
     */
    public void setDescription(List<String> description) {
        this.description = description;
    }

    /**
     * Get the value of titre
     *
     * @return the value of titre
     */
    public String getTitre() {
        return titre;
    }

    /**
     * Set the value of titre
     *
     * @param titre new value of titre
     */
    public void setTitre(String titre) {
        this.titre = titre;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    public void addActeur(Acteur a) {
        acteurs.add(a);
    }
    
    public void removeActeur(Acteur a) {
        acteurs.remove(a);
    }

    public void addRealisateur(Realisateur r) {
        realisateurs.add(r);
    }

    public void removeRealisateur(Realisateur r) {
        realisateurs.remove(r);
    }
    public void addCategorie(Categorie c){
        categories.add(c);
    }
    public void removeCategorie(Categorie c){
        categories.remove(c);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (int) id;
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Film)) {
            return false;
        }
        Film other = (Film) object;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Film[ id=" + id + " ]";
    }

    /**
     * @return the realisateurs
     */
    public Collection<Realisateur> getRealisateurs() {
        return realisateurs;
    }

    /**
     * @param realisateurs the realisateurs to set
     */
    public void setRealisateurs(Collection<Realisateur> realisateurs) {
        this.realisateurs = realisateurs;
    }

    /**
     * @return the note
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note the note to set
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return the categories
     */
    public List<Categorie> getCategories() {
        return categories;
    }

    /**
     * @param categories the categories to set
     */
    public void setCategories(List<Categorie> categories) {
        this.categories = categories;
    }

    /**
     * @return the affiche
     */
    public String getAffiche() {
        return affiche;
    }

    /**
     * @param affiche the affiche to set
     */
    public void setAffiche(String affiche) {
        this.affiche = affiche;
    }

    /**
     * @return the descriptionDetail
     */
    public List<String> getDescriptionDetail() {
        return descriptionDetail;
    }

    /**
     * @param descriptionDetail the descriptionDetail to set
     */
    public void setDescriptionDetail(List<String> descriptionDetail) {
        this.descriptionDetail = descriptionDetail;
    }

    /**
     * @return the prixDVD
     */
    public int getPrixDVD() {
        return prixDVD;
    }

    /**
     * @param prixDVD the prixDVD to set
     */
    public void setPrixDVD(int prixDVD) {
        this.prixDVD = prixDVD;
    }

    /**
     * @return the prixBlueRay
     */
    public int getPrixBlueRay() {
        return prixBlueRay;
    }

    /**
     * @param prixBlueRay the prixBlueRay to set
     */
    public void setPrixBlueRay(int prixBlueRay) {
        this.prixBlueRay = prixBlueRay;
    }

    /**
     * @return the stock
     */
    public Stock getStock() {
        return stock;
    }

    /**
     * @param stock the stock to set
     */
    public void setStock(Stock stock) {
        this.stock = stock;
    }
}
